Subject: DLSw Version 0.16 Chapter 5 (2 of 3)

From: "Alan K. Bartky, Manager of Technology" <[email-masked]>
Date: Thu, 22 Dec 94 10:30: 6 PST

----------
X-Sun-Data-Type: text
X-Sun-Data-Description: text
X-Sun-Data-Name: text
X-Sun-Content-Lines: 3
X-Sun-Content-Length: 67

This is overall part 6 of 12

This is Part 2 of 3 for chapter 5

----------
X-Sun-Data-Type: default
X-Sun-Data-Description: default
X-Sun-Data-Name: dlsw5b.txt
X-Sun-Content-Lines: 496
X-Sun-Content-Length: 26865

RFC XXXX      DLSw: Switch-to-Switch Protocol  December 1994

   remote MAC address information.  The ICANREACH_cs message must be
   returned to the first partner DLSw from which a CANUREACH_cs was
   received for this circuit, or an implementation may optionally reply to
   all partners from which the CANUREACH_cs was received.

   The RESOLVE_PENDING state is exited once the data link has been started
   (i.e., a DLC_DL_STARTED signal is received as a result of a Test
   response received by the DLC).  The target Data Link Switch then enters
   the CIRCUIT_PENDING state.

5.2.3. CIRCUIT_START State

   +----------------------+---------------------+----------------------+
   |        Event         |      Action(s)      |      Next State      |
   +----------------------+---------------------+----------------------+
   | Receive CANUREACH_cs | If origin MAC addr  | If DLC_START_DL      |
   | for circuit in       | in CANUREACH_cs is  | issued:              |
   | opposite direction   | greater than origin |   RESOLVE_PENDING    |
   |                      | MAC addr of circuit:|                      |
   |                      |   DLC_START_DL      |                      |
   |                      | else:               |                      |
   |                      |   no action taken   |                      |
   +----------------------+---------------------+----------------------+
   | Receive ICANREACH_cs | If LF Size Control  | If LF Size Control   |
   |                      | bit set and LF Size | bit set and LF Size  |
   |                      | is not negotiable:  | is not negotiable:   |
   |                      |   Send HALT_DL_NOACK|   DISCONNECTED       |
   |                      | else:               | else if Connected:   |
   |                      |   Send REACH_ACK,   |   CONNECT_PENDING    |
   |                      |   Send appropriate  | else:                |
   |                      |   SSP message based |   CIRCUIT_ESTABLISHED|
   |                      |   on the event      |                      |
   |                      |   that generated    |                      |
   |                      |   CANUREACH_cs      |                      |
   |                      |   (see Note)        |                      |
   +----------------------+---------------------+----------------------+
   | DLC_DGRM             | Send DATAFRAME      |                      |
   +----------------------+---------------------+----------------------+
   | DLC_ERROR            |                     | DISCONNECTED         |
   +----------------------+---------------------+----------------------+
   | CS_TIMER_EXP         |                     | DISCONNECTED         |
   +----------------------+---------------------+----------------------+
   | XPORT_FAILURE        |                     | DISCONNECTED         |
   +----------------------+---------------------+----------------------+

   The CIRCUIT_START state is entered by the origin Data Link Switch when a
   DLC_XID or DLC_CONTACTED signal has been received from the DLC.

   The CIRCUIT_START state is exited upon receipt of an ICANREACH_cs
   message.  A REACH_ACK message is returned to the target Data Link
   Switch.  If the CIRCUIT_START state was entered due to a DLC_XID signal,
   an XIDFRAME message containing the XID is sent to the target Data Link
   Switch.  If the CIRCUIT_START state was entered due to a DLC_CONTACTED
   signal, a CONTACT message is sent to the target Data Link Switch.

AIW DLSw Related Interest Group           DLSw version 0.16 [Page 31]

RFC XXXX      DLSw: Switch-to-Switch Protocol  December 1994

   Note:  For example, DLC_XID - send XIDFRAME, DLC_CONTACTED - send
   CONTACT message

5.2.4. CIRCUIT_PENDING State

   +----------------------+---------------------+----------------------+
   |        Event         |      Action(s)      |      Next State      |
   +----------------------+---------------------+----------------------+
   | Receive CONTACT      | DLC_CONTACT         | CONTACT_PENDING      |
   +----------------------+---------------------+----------------------+
   | Receive HALT_DL      | DLC_HALT_DL         | HALT_PENDING         |
   +----------------------+---------------------+----------------------+
   | Receive HALT_DL_NOACK| DLC_HALT_DL         | HALT_PENDING_NOACK   |
   +----------------------+---------------------+----------------------+
   | Receive REACH_ACK    | If Connected:       | If Connected:        |
   |                      |  Send CONTACT       |  CONNECT_PENDING,    |
   |                      |                     | else:                |
   |                      |                     |  CIRCUIT_ESTABLISHED |
   +----------------------+---------------------+----------------------+
   | Receive XIDFRAME     | DLC_XID             |                      |
   +----------------------+---------------------+----------------------+
   | Receive DGRMFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
   | Receive DATAFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
   | DLC_CONTACTED        | If UA is sent in    |                      |
   |                      | response to SABME:  |                      |
   |                      |   DLC_ENTER_BUSY    |                      |
   |                      | else:               |                      |
   |                      |   no action taken   |                      |
   +----------------------+---------------------+----------------------+
   | DLC_ERROR            |                     | DISCONNECTED         |
   +----------------------+---------------------+----------------------+
   | DLC_XID              | Drop or hold until  |                      |
   |                      | REACH_ACK received  |                      |
   +----------------------+---------------------+----------------------+
   | DLC_DGRM             | Send DATAFRAME      |                      |
   +----------------------+---------------------+----------------------+
   | XPORT_FAILURE        | DLC_HALT_DL         | HALT_PENDING_NOACK   |
   +----------------------+---------------------+----------------------+

AIW DLSw Related Interest Group           DLSw version 0.16 [Page 32]

RFC XXXX      DLSw: Switch-to-Switch Protocol  December 1994

   The CIRCUIT_PENDING state is entered by the target Data Link Switch
   following the sending of an ICANREACH_cs message.  In this state it is
   awaiting the reception of a REACH_ACK message from the origin Data Link
   Switch.

   If the target Data Link Switch happens to receive a SABME command from
   the target station while in the CIRCUIT_PENDING state (i.e., a
   DLC_CONTACTED signal received from the DLC), the reception of the
   REACH_ACK message causes the target Data Link Switch to enter the
   CONNECT_PENDING state and to send a CONTACT message to the origin Data
   Link Switch.

   If no such SABME is received, the receipt of the REACH_ACK causes the
   Data Link Switch to enter CIRCUIT_ESTABLISHED state.

5.2.5. CONNECT_PENDING State

   +----------------------+---------------------+----------------------+
   |        Event         |      Action(s)      |      Next State      |
   +----------------------+---------------------+----------------------+
   | Receive CONTACTED    | If UA was sent in   | CONNECTED            |
   |                      | response to SABME:  |                      |
   |                      |   DLC_EXIT_BUSY     |                      |
   |                      | else:               |                      |
   |                      |   DLC_CONTACT       |                      |
   +----------------------+---------------------+----------------------+
   | Receive HALT_DL      | DLC_HALT_DL         | HALT_PENDING         |
   +----------------------+---------------------+----------------------+
   | Receive HALT_DL_NOACK| DLC_HALT_DL         | HALT_PENDING_NOACK   |
   +----------------------+---------------------+----------------------+
   | Receive DGRMFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
   | Receive DATAFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
   | Receive ICANREACH_cs | Send HALT_DL_NOACK  |                      |
   +----------------------+---------------------+----------------------+
   | DLC_RESET            | Send RESTART_DL     | CIRCUIT_RESTART      |
   +----------------------+---------------------+----------------------+
   | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
   +----------------------+---------------------+----------------------+
   | DLC_DGRM             | Send DGRMFRAME      |                      |
   +----------------------+---------------------+----------------------+
   | XPORT_FAILURE        | DLC_HALT_DL         | HALT_PENDING_NOACK   |
   +----------------------+---------------------+----------------------+

   The CONNECT_PENDING state is entered when a DLC_CONTACTED signal has
   been received from the DLC (i.e., a SABME command has been received).  A
   CONTACT message it then  issued.  The state is exited upon the receipt
   of a CONTACTED message.  If a DLC_RESET signal is received, the local
   data link is restarted and a RESTART_DL message is sent to the remote
   DLSw.

   An ICANREACH_cs received after the transition to CONNECT_PENDING state
   indicates that more than one CANUREACH_cs was sent at circuit

AIW DLSw Related Interest Group           DLSw version 0.16 [Page 33]

RFC XXXX      DLSw: Switch-to-Switch Protocol  December 1994

   establishment time and the target station was found by more than one
   Data Link Switch partner.  A HALT_DL_NOACK is sent to halt the circuit
   started by the Data Link Switch partner that originated each such
   ICANREACH_cs.

     Note:  Some implementations will also send a Test command in order to
     restart the data link to the station that sent the SABME command
     (i.e., a DLC_START_DL will be issued).

5.2.6. CIRCUIT_ESTABLISHED State

   +----------------------+---------------------+----------------------+
   |        Event         |      Action(s)      |      Next State      |
   +----------------------+---------------------+----------------------+
   | Receive CONTACT      | DLC_CONTACT         | CONTACT_PENDING      |
   +----------------------+---------------------+----------------------+
   | Receive HALT_DL      | DLC_HALT_DL         | HALT_PENDING         |
   +----------------------+---------------------+----------------------+
   | Receive HALT_DL_NOACK| DLC_HALT_DL         | HALT_PENDING_NOACK   |
   +----------------------+---------------------+----------------------+
   | Receive XIDFRAME     | DLC_XID             |                      |
   +----------------------+---------------------+----------------------+
   | Receive DGRMFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
   | Receive DATAFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
   | Receive ICANREACH_cs | Send HALT_DL_NOACK  |                      |
   +----------------------+---------------------+----------------------+
   | DLC_CONTACTED        | Send CONTACT        | CONNECT_PENDING      |
   |                      | If UA is sent in    |                      |
   |                      | response to SABME:  |                      |
   |                      |   DLC_ENTER_BUSY    |                      |
   |                      | else:               |                      |
   |                      |   no action taken   |                      |
   +----------------------+---------------------+----------------------+
   | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
   +----------------------+---------------------+----------------------+
   | DLC_DGRM             | Send DGRMFRAME      |                      |
   +----------------------+---------------------+----------------------+
   | DLC_XID              | Send XIDFRAME       |                      |
   +----------------------+---------------------+----------------------+
   | XPORT_FAILURE        | DLC_HALT_DL         | HALT_PENDING_NOACK   |
   +----------------------+---------------------+----------------------+

   The CIRCUIT_ESTABLISHED state is entered by the origin Data Link Switch
   from the CIRCUIT_START state, and by the target Data Link Switch from
   the CIRCUIT_PENDING state.  The state is exited when a connection is
   started (i.e., DLC receives a SABME command) or CONTACT is received.
   The next state is CONTACT_PENDING or CONNECT_PENDING.

   An ICANREACH_cs received after the transition to CIRCUIT_ESTABLISHED
   state indicates that more than one CANUREACH_cs was sent at circuit
   establishment time and the target station was found by more than one
   Data Link Switch partner.  A HALT_DL_NOACK is sent to halt the circuit

AIW DLSw Related Interest Group           DLSw version 0.16 [Page 34]

RFC XXXX      DLSw: Switch-to-Switch Protocol  December 1994

   started by the Data Link Switch partner that originated each such
   ICANREACH_cs.

5.2.7. CONTACT_PENDING State

   +----------------------+---------------------+----------------------+
   |        Event         |      Action(s)      |      Next State      |
   +----------------------+---------------------+----------------------+
   | Receive HALT_DL      | DLC_HALT_DL         | HALT_PENDING         |
   +----------------------+---------------------+----------------------+
   | Receive HALT_DL_NOACK| DLC_HALT_DL         | HALT_PENDING_NOACK   |
   +----------------------+---------------------+----------------------+
   | Receive RESTART_DL   | DLC_HALT_DL         | RESTART_PENDING      |
   +----------------------+---------------------+----------------------+
   | Receive DGRMFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
   | Receive DATAFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
   | DLC_CONTACTED        | Send CONTACTED      | CONNECTED            |
   +----------------------+---------------------+----------------------+
   | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
   +----------------------+---------------------+----------------------+
   | DLC_DGRM             | Send DGRMFRAME      |                      |
   +----------------------+---------------------+----------------------+
   | XPORT_FAILURE        | DLC_HALT_DL         | HALT_PENDING_NOACK   |
   +----------------------+---------------------+----------------------+

   The CONTACT_PENDING state is entered upon the receipt of a CONTACT
   message, which causes the Data Link Switch to issue a DLC_CONTACT signal
   to the DLC (i.e., DLC sends a SABME command).  This state is then exited
   upon the receipt of a DLC_CONTACTED signal from the DLC (i.e., a UA
   response received).

   If a RESTART_DL message is received, indicating that the remote Data
   Link Switch has received a DLC_RESET signal, the local Data Link Switch
   sends a DISC command frame on the adjacent LAN (i.e., DLC_HALT_DL
   signal) and enter the RESTART_PENDING state.

   An ICANREACH_cs received after the transition to CONTACT_PENDING state
   indicates that more than one CANUREACH_cs was sent at circuit
   establishment time and the target station was found by more than one
   Data Link Switch partner.  A HALT_DL_NOACK is sent to halt the data link
   started by the Data Link Switch partner that originated this
   ICANREACH_cs.

AIW DLSw Related Interest Group           DLSw version 0.16 [Page 35]

RFC XXXX      DLSw: Switch-to-Switch Protocol  December 1994

5.2.8. CONNECTED State

   +----------------------+---------------------+----------------------+
   |        Event         |      Action(s)      |      Next State      |
   +----------------------+---------------------+----------------------+
   | Receive HALT_DL      | DLC_HALT_DL         | HALT_PENDING         |
   +----------------------+---------------------+----------------------+
   | Receive HALT_DL_NOACK| DLC_HALT_DL         | HALT_PENDING_NOACK   |
   +----------------------+---------------------+----------------------+
   | Receive RESTART_DL   | DLC_HALT_DL         | RESTART_PENDING      |
   +----------------------+---------------------+----------------------+
   | Receive DGRMFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
   | Receive INFOFRAME    | DLC_INFO            |                      |
   +----------------------+---------------------+----------------------+
   | Receive DATAFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
   | Receive XIDFRAME     | If non-activation   |                      |
   |                      | XID3:               |                      |
   |                      |   DLC_XID           |                      |
   +----------------------+---------------------+----------------------+
   | Receive ICANREACH_cs | Send HALT_DL_NOACK  |                      |
   +----------------------+---------------------+----------------------+
   | Receive ENTER_BUSY   | DLC_ENTER_BUSY      |                      |
   +----------------------+---------------------+----------------------+
   | Receive EXIT_BUSY    | DLC_EXIT_BUSY       |                      |
   +----------------------+---------------------+----------------------+
   | Rec TEST_CIRCUIT_REQ | Snd TEST_CIRCUIT_RSP|                      |
   +----------------------+---------------------+----------------------+
   | DLC_RESET            | Send RESTART_DL     | CIRCUIT_RESTART      |
   +----------------------+---------------------+----------------------+
   | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
   +----------------------+---------------------+----------------------+
   | DLC_DGRM             | Send DGRMFRAME      |                      |
   +----------------------+---------------------+----------------------+
   | DLC_INFO             | Send INFOFRAME      |                      |
   +----------------------+---------------------+----------------------+
   | DLC_XID              | If non-activation   |                      |
   |                      | XID3:               |                      |
   |                      |   Send XIDFRAME     |                      |
   +----------------------+---------------------+----------------------+
   | XPORT_FAILURE        | DLC_HALT_DL         | HALT_PENDING_NOACK   |
   +----------------------+---------------------+----------------------+

   The CONNECTED state is entered from the CONNECT_PENDING state upon the
   receipt of a CONTACTED message or from the CONTACT_PENDING state upon
   the receipt of a DLC_CONTACTED signal.

   The CONNECTED state is exited usually under one of two conditions: a
   DLC_ERROR signal received from the DLC (e.g., a DISC command received by
   the local DLC), or a HALT_DL message received from the other Data Link
   Switch (e.g., a DISC command received by the remote DLC).

AIW DLSw Related Interest Group           DLSw version 0.16 [Page 36]

RFC XXXX      DLSw: Switch-to-Switch Protocol  December 1994

   A SABME command (i.e., a DLC_RESET signal) received by either Data Link
   Switch will also cause the two Data Link Switches to leave the CONNECTED
   state and attempt to restart the circuit.  Following the receipt of a
   SABME, the local Data Link Switch sends a RESTART_DL message to the
   other Data Link Switch and enters the CIRCUIT_RESTART state.  Upon the
   receipt of the RESTART_DL message, the remote Data Link Switch sends a
   DISC command (i.e., DLC_HALT_DL signal) and enters the RESTART_PENDING
   state.

   An ICANREACH_cs received after the transition to CONNECTED state
   indicates that more than one CANUREACH_cs was sent at circuit
   establishment time and the target station was found by more than one
   Data Link Switch partner.  A HALT_DL_NOACK is sent to halt the circuit
   started by the Data Link Switch partner that originated each such
   ICANREACH_cs.

     Note:  Some implementations will also send a Test command in order to
     restart the data link to the station that sent the SABME command
     (i.e., a DLC_START_DL will be issued).

5.2.9. CIRCUIT_RESTART State

   +----------------------+---------------------+----------------------+
   |        Event         |      Action(s)      |      Next State      |
   +----------------------+---------------------+----------------------+
   | Receive DL_RESTARTED | If Connected:       | If Connected:        |
   |                      |  Send CONTACT       |  CONNECT_PENDING,    |
   |                      |                     | else:                |
   |                      |                     |  CIRCUIT_ESTABLISHED |
   +----------------------+---------------------+----------------------+
   | Receive HALT_DL_NOACK| DLC_HALT_DL         | HALT_PENDING_NOACK   |
   +----------------------+---------------------+----------------------+
   | Receive DGRMFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
   | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
   +----------------------+---------------------+----------------------+
   | DLC_DGRM             | Send DGRMFRAME      |                      |
   +----------------------+---------------------+----------------------+
   | XPORT_FAILURE        | DLC_HALT_DL         | HALT_PENDING_NOACK   |
   +----------------------+---------------------+----------------------+

   The CIRCUIT_RESTART state is entered if a DLC_RESET signal is received
   from the local DLC.  This was caused by the receipt of a SABME command
   while a connection was currently active.  A DM response will be issued
   to the SABME command and the Data Link Switch will attempt to restart
   the end-to- end circuit.

   The CIRCUIT_RESTART state is exited through one of two transitions.  The
   next state depends upon the time the local DLC has reached the contacted
   state (i.e., a DLC_CONTACTED signal is presented) relative to the
   receipt of the DL_RESTARTED message.  This signal is caused by the
   origin station resending the SABME command that initially caused the

AIW DLSw Related Interest Group           DLSw version 0.16 [Page 37]

RFC XXXX      DLSw: Switch-to-Switch Protocol  December 1994

   Data Link Switch to enter the CIRCUIT_RESTART state.  The two cases are
   as follows:

          1) DL_RESTARTED message received before the DLC_CONTACTED signal-
          In this case, the CIRCUIT_ESTABLISHED state is entered.

          2) DL_RESTARTED message received after the DLC_CONTACTED signal-
          In this case, the CONNECT_PENDING state is entered.

5.2.10. DISCONNECT_PENDING State

   +----------------------+---------------------+----------------------+
   |        Event         |      Action(s)      |      Next State      |
   +----------------------+---------------------+----------------------+
   | Receive DL_HALTED    |                     | DISCONNECTED         |
   +----------------------+---------------------+----------------------+
   | Receive HALT_DL      | Send DL_HALTED      |                      |
   +----------------------+---------------------+----------------------+
   | Receive HALT_DL_NOACK|                     | DISCONNECTED         |
   +----------------------+---------------------+----------------------+
   | Receive DATAFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
   | DLC_DGRM             | Send DATAFRAME      |                      |
   +----------------------+---------------------+----------------------+
   | XPORT_FAILURE        |                     | DISCONNECTED         |
   +----------------------+---------------------+----------------------+

   The DISCONNECT_PENDING state is entered when a DLC_ERROR signal is
   received from the local DLC.  Upon receipt of this signal, a HALT_DL
   message is sent.  Once an DL_HALTED message is received, the state is
   exited, and the Data Link Switch enters the DISCONNECTED state.

5.2.11. RESTART_PENDING State

   +----------------------+---------------------+----------------------+
   |        Event         |      Action(s)      |      Next State      |
   +----------------------+---------------------+----------------------+
   | Receive HALT_DL_NOACK|                     | HALT_PENDING_NOACK   |
   +----------------------+---------------------+----------------------+
   | Receive DGRMFRAME    | DLC_DGRM            |                      |
   +----------------------+---------------------+----------------------+
   | DLC_DL_HALTED        | Send DL_RESTARTED   | CIRCUIT_ESTABLISHED  |
   +----------------------+---------------------+----------------------+
   | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
   +----------------------+---------------------+----------------------+
   | DLC_DGRM             | Send DGRMFRAME      |                      |
   +----------------------+---------------------+----------------------+
   | XPORT_FAILURE        | DLC_HALT_DL         | HALT_PENDING_NOACK   |
   +----------------------+---------------------+----------------------+

   The RESTART_PENDING state is entered upon the receipt of a RESTART_DL
   message from the remote DLSw while the local Data Link Switch is in
   either the CONTACT_PENDING state or the CONNECTED state, which causes
   the local DLSw to issue a DISC command to the DLC.  Upon the receipt of

AIW DLSw Related Interest Group           DLSw version 0.16 [Page 38]